function date2String({ date = new Date(), format = 'YYYY-MM-DD' } = {}) {
  if (date instanceof Date) {
    const o = {
      year: date.getFullYear(), // 年份
      'M+': date.getMonth() + 1, // 月份
      'D+': date.getDate(), // 日
      'h+': date.getHours(), // 小时
      'm+': date.getMinutes(), // 分
      's+': date.getSeconds(), // 秒
      'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
      'S+': date.getMilliseconds(), // 毫秒
    };
    // 年份单独处理
    if (/(Y+)/.test(format)) {
      format = format.replace(RegExp.$1, o.year.toString().substr(4 - RegExp.$1.length));
    }
    // 其余按需替换
    for (const k in o) {
      if (new RegExp(`(${k})`).test(format)) {
        format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((`00${o[k]}`).substr((`${o[k]}`).length)));
      }
    }
  } else {
    return '';
  }
  return format;
}

function second2date(seconds) {
  const formatObj = {
    second: {
      string: '秒',
      decimal: 60,
    },
    minute: {
      string: '分',
      decimal: 60,
    },
    hour: {
      string: '时',
      decimal: 24,
    },
    day: {
      string: '天',
      decimal: 30,
    },
  };

  const result = {
    str: '',
  };

  let s = parseInt(seconds) || 0;
  for (const key in formatObj) {
    result[key] = (s % formatObj[key].decimal);
    result.str = `${result[key]}${formatObj[key].string}` + result.str;
    s = parseInt(s / formatObj[key].decimal);
    if (s === 0) break;
  }
  
  return result;
}

export { date2String, second2date };
